package com.ftg.learn.sys.user.controller;

import com.ftg.learn.comm.entity.sys.Role;
import com.ftg.learn.sys.user.service.IResourcesService;
import com.ftg.learn.sys.user.service.IRoleService;
import com.ftg.learn.sys.user.service.impl.RoleServiceImpl;
import com.ftg.learn.util.AbstractController;
import com.ftg.learn.util.ResBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 *
 *  显示功能 ：  主列表没有问题  rid rname rdesc 不用写
 *  (本周的任务)
 *          :  联动的问题 点击rid 角色编号| 名称 ，调出一列表列出所有的当前角色下的全部用户信息，联动的员工信息
 *          : 后面会有一个按钮 ： 权限列表 点击以后列出当前角色的全部权限 {权限要以树形结构展示}
 * 添加  ： 写完了
 * 修改 ： 完成了
 *
 * 删除  ： 删除角色，要与中间表联动删除
 *      用户角色中间表
 *      角色资源中间表
 *      角色表
 *  (本周任务)
 * 角色授权 ： 用户授角色一样
 *    1 先删除角色资源中间表
 *    2 添加
 *
 * <p>
 * 角色表，用来存储当前系统的角色 前端控制器
 *
 *  列表,模糊查询功能
 *  添加
 *  修改
 *  删除 （逻辑删除有了，删除中间表）
 *  列出当前角色下面的所有权限
 * </p>
 *
 * @author kangjx
 * @since 2022-10-30
 */
@RestController
@Api(tags = "角色管理")
@RequestMapping("/system/role")
public class RoleController extends AbstractController<RoleServiceImpl, Role> {


    @Resource
    IRoleService iRoleService;


    @Resource
    IResourcesService iResourcesService;

    @ApiOperation("这是角色的删除功能，删除角色表以及角色权限中间表")
    @DeleteMapping("/deleteRoleWithResource/{id}")
    public ResBean deleteRoleWithResource(
        @PathVariable("id") @ApiParam(value = "角色主键",defaultValue = "1",required = true) Integer id
    ){
        return iRoleService.deleteRoleWithResource(id);
    }


    @ApiOperation("角色的权限明细")
    @PutMapping("/findResourceByRoleId/{id}")
    public ResBean findResourceByRoleId(
            @PathVariable("id") @ApiParam(value = "角色主键",defaultValue = "1",required = true) Integer id
    ){
        return iResourcesService.showResourceByRoleid(id);
    }


    @ApiOperation("角色授权")
    @PostMapping("/roleWithResource")
    public ResBean roleWithResource(
            @RequestParam("rid") @ApiParam(value = "角色主键",defaultValue = "1",required = true) Integer rid,
            @RequestParam("resids") @ApiParam(value = "相关角色编号",required = true) List<Integer> resids
    ){
        return iRoleService.roleWithResource(rid,resids);
    }


}
